package cn.sytton.taffecloud.common.api.seata;

import feign.RequestInterceptor;
import feign.RequestTemplate;
import io.seata.core.context.RootContext;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;

import java.util.ArrayList;
import java.util.List;

/**
 * Feign 传递Xid拦截器
 *
 * @author skyrock
 */
@Slf4j
public class FeignXidRequestInterceptor implements RequestInterceptor {
    @Override
    public void apply(RequestTemplate template) {
        String xid = RootContext.getXID();
        if (StringUtils.isEmpty(xid)) {
            return;
        }
        List<String> fescarXid = new ArrayList<>();
        fescarXid.add(xid);
        template.header(RootContext.KEY_XID, fescarXid);
        if (log.isDebugEnabled()) {
            log.debug("add xid: {}", fescarXid);
        }
    }
}
